import logging,time
import sys
import os
from common.get_config import *

# 获取日志处理对象

class BotLogger(object):
    def __init__(self, filename, logname=0, out=1):
        """
        获取日志处理对象
        :param appName: 应用程序名
        :param logFileName: 日志文件名
        :param out: 设置输出端：0：默认控制台，1：输入文件，其他：控制台和文件都输出
        :return: 返回日志对象
        """
        self.appName = filename.split('.')[0]
        # self.logFileName = os.getcwd() + "\\log\\"
        # self.logFileName = r_config(conf_dir, 'report', 'log_path')
        self.logFileName = ReadConfig().get_Report('log_path').replace('base_dir',BASE_DIR)
        # 判断是否存在log文件夹
        if not os.path.exists(self.logFileName):
            os.makedirs(self.logFileName)
        # 不同的log名字·
        if ReadConfig().get_Report('send') == True:
            self.logFileName = str(time.strftime("%Y%m%d-%H:%M"))+'.log'
        else:
            if logname == 1:
                self.logFileName += "yza.log"
            elif logname == 2:
                self.logFileName += 'B.log'
            elif logname == 3:
                self.logFileName += "C.log"
            elif logname == 0:
                self.logFileName += "D.log"
        print(ReadConfig().get_Report('send'))
        self.out = out

    def getLogger(self):
        # 获取logging实例
        logger = logging.getLogger(self.appName)
        # 指定输出的格式  %(name)s：模块名称  %(lineno)d：日志级别的当前行号   %(asctime)s：运行时间  %(levelname)s：日志级别  message：日志内容 lineno：
        # formatter = logging.Formatter('%(name)s  %(lineno)d  %(asctime)s  %(levelname)-8s:%(message)s')
        formatter = logging.Formatter('%(asctime)s - [%(filename)s-->line:%(lineno)d] - %(levelname)s: %(message)s')

        # 文件日志
        file_handler = logging.FileHandler(self.logFileName, encoding='utf-8')
        file_handler.setFormatter(formatter)

        # 控制台日志
        console_handler = logging.StreamHandler(sys.stdout)
        console_handler.setFormatter(formatter)

        # # 指定日志的最低输出级别
        logger.setLevel(logging.INFO)  # 20

        # 为logger添加具体的日志处理器输出端
        if self.out == 1:
            logger.addHandler(file_handler)
        elif self.out == 0:
            logger.addHandler(console_handler)
        else:
            logger.addHandler(file_handler)
            logger.addHandler(console_handler)
        return logger




